package com.qch.demo_command;

import java.util.ArrayList;
import java.util.List;

/**
 * @Author qch
 * @Date 2021/8/12
 * Jconsole（Java Monitoring and Management Console）是从java5开始，在JDK中自带的java监控和管理控制台，用于
 * 对JVM中内存，线程和类等的监控，是一个基于JMX（java management extensions）的GUI性能监测工具。jconsole
 * 使用jvm的扩展机制获取并展示虚拟机中运行的应用程序的性能和资源消耗等信息。
 * 直接在jdk/bin目录下点击jconsole.exe即可启动
 */
public class Demo8jconsole {
    /**
     * 内存占位符对象，一个OMMObject大约栈64k
     */
    static class OOMObject {
        public byte[] placeholder = new byte[64 * 1024];
    }

    public static void fillHeap(int num) throws InterruptedException {
        List<OOMObject> list = new ArrayList<OOMObject>();
        for (int i = 0; i < num; i++) {
            Thread.sleep(200);
            list.add(new OOMObject());
        }
        System.gc();
    }

    public static void main(String[] args) throws Exception {
        fillHeap(10000);
        System.gc();
        Thread.sleep(10000);
    }

}
